#ifndef E_MATRIX_4X4_H
#define E_MATRIX_4X4_H

#include <DefineLibCommon.h>

struct COMMON_DLL EVec3 {
    EVec3();
    EVec3(double v1, double v2, double v3);
    virtual ~EVec3();
    union {
        double v[3];
        struct {
            double x;
            double y;
            double z;
        };
    };

    EVec3& operator=(const EVec3& value);
};

struct  COMMON_DLL EVec4 {
    EVec4();
    EVec4(double v1, double v2, double v3, double v4);
    virtual ~EVec4();
    union {
        double v[4];
        struct {
            double x;
            double y;
            double z;
            double w;
        };
        struct {
            double r;
            double g;
            double b;
            double a;
        };
    };
    EVec4& operator=(const EVec4& value);
};

struct  COMMON_DLL EMatrix4x4
{
    EMatrix4x4();
    virtual ~EMatrix4x4();

    double data[4][4];
    EMatrix4x4& operator=(const EMatrix4x4& value);
};

#endif // E_MATRIX_4X4_H
